export interface Options {
  show?: boolean
  imageList: string[]
  index?: number
  scaleStep?: number
  defaultWidth?: number
  maskClosable?: boolean
  rememberState?: boolean
  onImgLoad?: ({ index: number, url: string, dom: HTMLImageElement }) => void
  onImgError?: ({ index: number, url: string, dom: HTMLImageElement }) => void
}

export interface Props {
  show: boolean
  instance: Props
  imageList: string[]
  index: number
  scaleStep: number
  defaultWidth: number
  maskClosable: boolean
  rememberState: boolean
}

export interface PreviewActions {
  resume: () => void
  close: () => void
  prev: () => void
  next: () => void
  setScale: (scale: number) => void
  setRotate: (rotate: number) => void
}

export interface ImageProps {
  alt?: string
  fallback?: string
  src: string
  width: string | number
  height?: string | number
  placeholder?: string | boolean
  preview?:
    | boolean
    | {
        visible?: boolean
        onVisibleChange?: (visible: boolean, prevVisible: boolean) => void
        getContainer: string | HTMLElement | (() => HTMLElement)
      }
}

export type ImageItem = string | ImageProps
